<?php
/**
 * Created by PhpStorm.
 * User: ownfi
 * Date: 2017-04-08
 * Time: 10:16
 */

namespace App\Services;

use App\Models\MasterFund;

/**
 * 支付服务
 * Interface IPayService
 * @package App\Services
 */
interface IPayService
{

    /**
     * 设定支付组件
     * @param $payment_method Params::$PAY_METHOD
     * @return mixed
     */
    public function setPaymentMethod($payment_method);

    /**
     * 实施退还质保金
     * @param $trade_id
     * @param $payee_real_name
     * @param $payee_account
     * @param $amount
     * @param null $remark
     * @return mixed
     */
    public function doReturnFund($trade_number,$payee_real_name,$payee_account,$amount);

    /**
     * 实施提现
     * @param $trade_id
     * @param $payee_real_name
     * @param $payee_account
     * @param $amount
     * @param null $remark
     * @return mixed
     */
    public function doCash($trade_number,$payee_real_name,$payee_account,$amount);

    /**
     * 实施退款
     * @param $trade_id
     * @param $payee_real_name
     * @param $payee_account
     * @param $amount
     * @param null $remark
     * @return mixed
     */
    public function doRefund($trade_number,$pay_trade_number,$transaction_id,$amount);

    /**
     * 记录日志
     * @param $message
     * @return mixed
     */
    public function log($message);

    /**
     * 接收&回应支付回调，设置交易成功的订单状态
     * @param $trade_number
     * @return mixed
     */
    public function handleNotify();

    /**
     * 处理商家交易成功的流水，设置对应订单状态
     * @param $trade_number
     * @return mixed
     */
    public function handleMerchantPaymentSuccess($trade_number,$transaction_id = null);

    /**
     * 处理交易成功的流水，设置对应订单状态
     * @param $trade_number
     * @return mixed
     */
    public function handlePaymentSuccess($trade_number,$transaction_id = null);

}